約 3,936,324 件
https://w.atwiki.jp/aniwotawiki/pages/48834.html
登録日:2021/08/05 Thu 08 15 29 更新日:2024/06/29 Sat 10 25 33NEW! 所要時間:約 11 分で読めます ▽タグ一覧 MOB Minecraft アンデッド ウィザースケルトン ウザい スケさん スケルトン スケルトンホースマン ストレイ スナイパー スパイダージョッキー ボグド マイクラ マインクラフト 同士討ち 弓矢 敵 狙撃手 誤射 誤爆 骨 骸骨 ガシャッ、ガシャ…… サンドボックス型ゲーム『Minecraft』に登場する敵性MOBの一種。 通称「スケさん」。まだカクさんはいない。 概要 マイクラ世界ではゾンビと並んでメジャーなモンスター。 名前通り灰色の骸骨そのまんまな姿をしており、ゾンビと同じく黒い横棒の目の顔に、片手は通常時は弓を装備している。 平常時はこれまたゾンビと同じく、ウロウロしては立ち止まるを繰り返すだけ。 視界内にプレイヤーが入れば弓を構え、矢で狙い撃つようになるのだが…… これがまあ、非常にウザい。 基本的に弓矢しか攻撃手段がないため、放っておくと一方的に狙撃してくる上、命中精度も比較的高い。この命中精度は難易度によって変化する仕様となっており、高いほどゴルゴ13ばりの正確さで射抜いてくる。 ゾンビは近づかれてもタイミングよく攻撃して吹き飛ばせばノーダメージで倒せるが、こいつはゾンビみたいにひたすら突っ込んでくるような脳筋ではなく、立ち止まってなかなか近づいてこない。ではこちらから…と動けば的確な射撃が飛んでくる。ひどい。 しかも接近するほど連射間隔が狭まり、やっと倒した頃には矢が刺さりまくりの状態になってることも。 矢の残数が無限なのも相まって、ろくに装備が整わない序盤では厳しい相手となる。それでいて落とす弓には(一部を除いて)無限のエンチャントがついていない。どゆこと? 一応、アンデッドなので太陽の光を浴びると発火して自滅するが、日が昇ると日陰や水場に逃げ込んでやり過ごす程度の知能もあるのが厄介。 ゾンビよりもしぶとく生き残りやすい。 後述のように防具を頭に装備している場合は太陽が効かず、平然とその辺をうろついて邪魔になる。 更に燃えたら燃えたで、放つ矢がたまに炎属性(フレイム/火炎のエンチャント)と化してプレイヤーを物理的に炎上させてくる。(*1) ところで弓矢しか使わないと書いたが、難易度Hardなどでは落ちている剣を拾って直接攻撃することもある。 スポーンする可能性があるのは、「地上、地下を問わず、光源のない暗い場所であれば何処でも」。 洞窟の暗闇の奥から撃たれるのも心臓に悪くて嫌だが、本当の脅威は渓谷などに代表される「高低差がとても激しい地形」に湧いた時。 高所での作業中にいきなりスナイプされ、為す術もなく落下死なんて経験をしたプレイヤーは一人や二人じゃ済まないだろう。 溶岩の近くに湧いた時も危険で、大抵マグマダイブした日には備えが無い限り焼死一直線。ダイヤモンドなどの超貴重品を掘り当てた後にやられたら目も当てられない。 こういう死の可能性を未然に減らすためにも、松明などを使った湧き潰しが必要不可欠なのだ。 倒すと高確率で骨や矢、たまに弓(しかしかなり消耗している)をドロップする。ただし地面に刺さった矢は引き抜けない。 難易度が上がると防具を装備することもあり、低確率でそれらもドロップする。 ゾンビも言えることだが、よく身に着けるのは革や金製で、時々チェーンや鉄の防具、そして超レアだがダイヤの防具を着けていることもある。 ネザーアップデートによりネザー/暗黒界の新たなバイオーム、「ソウルサンドの谷」にもスポーンするようになった。 ちなみに粉雪に沈んでも凍結ダメージを受けず、一定時間沈み続けるとストレイ(後述)に変化する。 誤射 さてこのスケルトン、射撃の腕前はいいのだが味方がいても平気で撃つというとんでもない性質がある。 しかも急に射線上に入ってきて誤爆した…とかいうレベルではない。目の前に味方の頭があってもためらいなく撃つのだ。 Mobの近接攻撃は決して誤爆しないのと比べて実に対照的である。 撃たれた側は「ふざけんなクソ野郎!」と怒り心頭で自分に矢を撃ち込んだスケルトンに敵対を始める。(*2) まぁ誤爆されたら誰だって怒って当たり前である。それが知能のないゾンビであろうとも。 一応、既にプレイヤーと交戦していた場合は必ず敵対するわけではないのだが、プレイヤーが攻撃していなかったり、視線が途切れた状態で誤射を受けた場合は即座に誤射したスケルトンをツブしに動く。 このためスケルトンはマイクラのMobの中で最も同士討ちを誘発する色々な意味ではた迷惑な存在ともなっている。 複数のMobに襲われている最中は特に誤射が起きやすい。 もちろんスケルトンに当たるとスケルトン同士でおっぱじめる。ここに別のMobがさらに挟まると……あら不思議、大混戦。 広い平野で戦っている時は早々起こるものではないが、たとえば湧き潰しをしていると必然的に湧きスペースが特定の場所に集中していくため、作業を進めるにつれて狭い空間にモンスターが集合しやすくなる。 こうなると行く先々で必然的にスケルトン同士で撃ち合いを始める率が跳ね上がり、空洞を見つけた瞬間身内争いを始めたり、挙句の果てには誤射されたクリーパーが自爆して勝手に死屍累々と化す。 ネザー バージョンアップを経てネザーでもスポーンするようになったため、スケルトンによる誤射の被害者は拡大の一途。 ネザー要塞でスポーンした際、かつてはゾンビピッグマン(現ゾンビピグリン)に誤爆するとスケルトンを血祭に上げた(血ないけど)後なぜかプレイヤーにも「お前も同罪だ」と言わんばかりに襲い掛かってくるという初見殺しがあった時期がある。(*3) さすがに今はプレイヤーが手出ししていなければ大丈夫なのでご安心を。 また、新たなバイオームとして追加された「ソウルサンドの谷」ではガストと並んでメインの出現モンスターとなり、かなり厄介になっているのだが、 ネザー荒野が隣接していたなら、あえてゾンピグを盾にし襲わせて遊ぶなんて事も可能だ。 対策 適当に戦っても何とかなったゾンビと違い、何も考えずにスケルトンと殴り合うのは生傷が増えたり予期せぬ事故を招いたりするだけである。 あくまで雑魚の範疇なだけあって、付け入るスキは多い。 遮蔽物に隠れる スケルトンは完全に見失うまでは逃げても追跡され、そして前述の通りこちらから近寄れば乱射される。 では、こちらがブロックの後ろに隠れるとどうするか? というと、意外にもこちらを視認するまで素直に追いかけてくれる。こちらが待ち伏せても警戒しないので、曲がり角に誘い込めば目の前に飛び出してきたところを先制攻撃できるのだ。 これを知っていると、わざわざ矢まみれになってまで突っ込む手間が省ける。 水中戦に持ち込む Bedrock版限定。 このプラットフォームにおけるスケルトンは水中だと弓を使わず、直接攻撃を行うという思考ルーチンを持つ。 水に入ってしまえば厄介な矢を撃たれず済むというわけである。 ということは、水中でも弓矢を使ってくるJava版のスケルトンって馬鹿って事? ただし、スケルトンの足しか浸からない場所で水流の先に陣取られると逆に極めて危険。 矢が失速しないので、こちらが流されている間に高確率で蜂の巣にされる。 盾を使う もっとも安全な方法。 片手に盾をセットしてしゃがみで構えると、自動で正面からの矢を防いでくれるばかりか、近くで弾き返された矢が運良くスケルトンに命中してダメージを与えてくれる場合もある。 反射抜きでも格段に戦いやすくなることを考えれば、武器防具と並んで最初に作れるようにしておきたい。 進捗の達成にも関わる。 亜種 スパイダージョッキー/ケイブスパイダージョッキー スパイダー/ケイブスパイダーがごくまれにスケルトンを乗せてスポーンした姿。 スパイダーの壁を登れる機動力と遠距離攻撃でプレイヤーを狙い撃ちしてくる厄介な敵。ケイブスパイダーはBedrock版のみで発生し、それに加えて毒を付与する。 ……なのだが、チキンジョッキー(ゾンビがニワトリに騎乗した形態)と同様の問題点から勝手にスケルトンだけ自滅していることが多く、生きたままの姿を拝めるのは非常にレアである。 スパイダーが壁を登ると大抵そのまま天井まで行くので、騎乗者は頭が天井にめり込んで窒息してしまうのだ。 では屋外でスポーンした時はというと、今度は日が昇って騎乗者だけじわじわ焼き殺されるという憂き目に…。 スパイダー(ニワトリ)にとって騎手は別にどうでもいい存在なのである。 ただ、1マスの隙間がない巨大な空間を作って放置すると、チキンジョッキーと共に拝めることが多い。拠点の地下に巨大空間を作るような真似をするときは注意して見ると良いだろう。 ストレイ ボロボロの防寒具らしきものを身に着けたスケルトン。 主に寒冷地系のバイオームでスポーンする際、高確率で通常のスケルトンと置き換える形で抽選される。 やはり日光を浴びると燃えて自滅する。 通常のスケルトンと違うのは、矢が「鈍化の矢」という種類になっており、当たると鈍化状態になって動きを鈍くさせられてしまう。 当然、遅くなってしまえば余計に矢の餌食。スケルトン以上に盾が重要となるだろう。 倒すと通常のスケルトンのドロップと稀に鈍化の矢をドロップする。 なお、帯電クリーパーの爆発に巻き込んでも何も落とさない。(*4) ちなみに水中での行動はスケルトンと同じ。 スケルトンホース/スケルトンホースマン スポーン条件が少々特殊な敵。 スケルトンホースはその名通り骨だけになった馬で、常に友好的なMOB。スケルトンホースマンはそれにスケルトン(エンチャントされた弓と頭防具付き)が騎乗した姿となる。 まず、このゲームでは天候が雷雨になるとランダムで落雷が発生し、その地点に一定確率でスケルトンホースがスポーンする。 こいつ自身はその場をうろついているだけで、しかし骸骨の馬が徘徊する光景には不気味さを覚える。 だがそれだけでは終わらず、更に近づいてみると突然落雷が起きてスケルトンホースマンに変身、更にその周囲にもスケルトンホースマンが3体スポーンして襲いかかるという初見殺しが待ち受けている。 これが通称「スケルトントラップ」と呼ばれるイベントであり、起点となるスケルトンホースが現れた時点で、その後は存在する限り天候に関係なくイベントが発生する。 なので、雨が上がった後に発生させたら晴天で雷が落ちることも。 ただでさえ厄介なスケルトンが徒党を組み、馬の機動力を得たのだから蜂の巣にされるのでは…… と思うかもしれないが、実際は索敵範囲が狭く、一度プレイヤーを見失うとあっさり諦める。 また、集団で現れるということは同士討ちの確率も高いということ。したがって意外とそんなに脅威ではない。 スケルトンのくせに日光で燃えない! …と思った人もいるだろうが、放っておけば燃えるのでご安心を。 すぐに燃えないのは鉄製ヘルメットをかぶっているからで、実は日光を受けるとジリジリと耐久値が減り、じきに壊れるのだ。 高台に逃げてしばらく放置するのも一つの手である。 ちなみにスケルトンホース自体はプレイヤーに友好的である。 騎乗しているスケルトンを倒すか、Bedrock版限定になるが釣竿で強制的に降ろしてしまえば、普通の馬と変わりない。 プレイヤーが鞍をつけてスケルトンホースに乗る事もできるし、Bedrock版では鞍すら不要である。 骨だけの見た目によらず日光耐性も持っている。ただアンデッドには違いないので、回復と負傷のポーションは逆になるので注意しよう。 水場に入ると窒息せずに水底へ沈み、他のジョッキーと違い騎乗も解除されずそのまま走れたりする。やっぱり骨だった。 ウィザースケルトン ネザー/暗黒界において「ネザー要塞」にスポーンする、地獄の黒スケルトン。 高確率で通常のスケルトンと置き換える形で現れる。 スケルトンよりも背が高く、それに伴って脚も長いため、移動速度はスケルトンに比べて早い。 弓ではなく剣を持っているが、上記の性質に加えて剣自体の攻撃力が高く、正面切って殴り合うのは困難。 しかも、ウィザースケルトンの攻撃を受けると「衰弱」の状態異常にかかり、体力がどんどん減ってしまう。 衰弱は毒と異なり体力が0になるまで減り続けるため、キワで止まるだろうと油断するのは極めて危険。ブレイズと一緒に出てきたら軽く死ねる。 ミルクを飲むことで解除できるのが救い。 ただし、背の高さが災いして2ブロック以下の空間を通行できない弱点がある。バリケードを作って安全に倒していくと良い。 同じネザーに生息するピグリン一族とは因縁の敵同士であり、お互いに発見すると即座に敵対行動を行う。 倒すとお約束の骨とネザーだから焦げているのか石炭、そして厄介さに反して異様にショボい石の剣をドロップする。 また、低確率でウィザースケルトンの頭蓋骨をドロップするのだが、これは本作の隠しキャラ?に相当する強大なボス・ウィザーの召喚に必要な素材となる。 ボグド 苔とキノコが生えた緑っぽい色のスケルトン。沼地のバイオームや、トライアルチャンバーのトライアルスポナーからスポーンする。弓矢で攻撃する、日光で燃えるなど通常のスケルトンと基本的には変わらないが通常種より体力が低く、攻撃の間隔も長い代わりに毒のステータスを与える矢で攻撃してくるという厄介な特徴を持つ。特に多くの敵mobが押し寄せてくるトライアルチャンバーではコイツの毒攻撃には注意が必要。ストレイと同じく倒すと効果付きの矢を落とすことがある。ちなみに、ハサミを使うと赤キノコ2個、茶キノコ2個、赤と茶のキノコ1つずつのいずれかをドロップする。なんか汚い… スケルトンヴァンガード 外伝作「マインクラフトダンジョンズ」に登場するスケルトン。砂漠のピラミッドステージで主であるネクロマンサーの王の護衛を務める。 遠距離攻撃が得意なスケルトンとは打って変わってこちらはグレイブによる近接攻撃を行うが、これが非常に厄介。リーチが他の敵に比べても長い上、左手に構えている盾でどんなダメージも一度だけ防いでしまう。その上そこそこ攻撃力があるので群れで襲われるたり狭い通路で遭遇すると苦戦を強いられる。 弓でチクチク攻撃するか、弓の攻撃を反射するエンチャント「偏向」を持っている場合は攻撃範囲の広いアーティファクトで攻めよう。防具のエンチャント「炎の道」や「帯電」も有効。 沈没したスケルトン 同じく外伝作「マインクラフトダンジョンズ」に登場。海をテーマにしたDLCのステージで、スケルトンの水中ステージバージョンといった位置付けで登場。 身体中に海藻が張り付いているいかにも水生といった見た目で、ハープーンによる狙撃を行う。(ただの弓による攻撃だと矢が貧弱になるため)弾速が遅く避けやすい一方でスケルトンよりも攻撃力が高いので他の敵に気を取られると群れによる集中砲火を受け危険。 余談 オオカミが大の苦手であり、プレイヤーを未発見の状態では離れるように逃げていく。プレイヤーを既に発見している場合は無視する。 昔は水にプカプカ浮いている姿も見られたが、現在は沈む仕様になっている。 約11%の確率で左利きのスケルトンがスポーンすることがある。 Magic the Gatheringの基本セット2019では「私の子供たちにとっては、スケルトンは弓を持って木の後ろに隠れていて待ち伏せして矢を射るものなのです。」というコラムと共に、このスケルトンを模したクリーチャー《骸骨射手/Skeleton Archer》が登場。レイ・ハリーハウゼンの映画に出てくるようなレトロなスケルトンと共演している。 追記・修正は盾を構えて近づきながらお願いします。 △メニュー 項目変更 この項目が面白かったなら……\ポチッと/ -アニヲタWiki- ▷ コメント欄 [部分編集] ゾンビと並んで松明の偉大さを教えてくれるある意味師匠ポジ -- 名無しさん (2021-08-05 08 33 37) スマブラスティーブのカラバリになんでこいつじゃなくてエンダーマンが選ばれたんだろう、って思ったけど弓使う攻撃がないからかな? -- 名無しさん (2021-08-05 11 12 44) ↑スケさんもアンデッドでゾンビと被るからでは? -- 名無しさん (2021-08-05 11 17 46) その前に直接的なプレイヤーキャラじゃないとは言えサンズ実装されてるし、そもそもありふれたスケルトン入れてもねぇ?って感じはする。 -- 名無しさん (2021-08-05 15 10 00) 落下しながらでも射抜いてくるからネザーで道連れにされて全ロスしたやつも少なくないはず -- 名無しさん (2021-08-06 12 10 34) やっとできたのか -- かく (2021-08-07 21 21 38) 日光でヘルメットの耐久減ってるの初めて知ったわ -- 名無しさん (2021-08-17 21 26 38) 骨馬欲しさに駆けずり回った思い出 -- 名無しさん (2022-06-12 10 14 48) 名前 コメント
https://w.atwiki.jp/akasatanahama/pages/102.html
概要 MOBを追加する。 今回は、匠型のMOBを追加する。 ソースコード AluminiumMod.java +長いので囲みます package tutorial.aluminiummod; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EnumCreatureType; import net.minecraft.item.Item; import net.minecraft.world.biome.BiomeGenBase; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @Mod(modid = "AluminiumMod", name = "Aluminium Mod", version = "1.0.0") public class AluminiumMod { //追加するアイテムの宣言 public static Item aluminiumEgg; @EventHandler public void perInit(FMLPreInitializationEvent event) { //Itemのインスタンスを生成し、代入する aluminiumEgg = new ItemAluminiumEgg() //クリエイティブタブの登録 .setCreativeTab(CreativeTabs.tabMaterials) //システム名の登録 .setUnlocalizedName("aluminiumEgg") //テクスチャ名の登録 .setTextureName("aluminiummod aluminiumEgg"); //GameRegistryへの登録 GameRegistry.registerItem(aluminiumEgg, "aluminiumEgg"); } @EventHandler public void init(FMLInitializationEvent event) { //Entityを登録する EntityRegistry.registerModEntity(EntityAluminiumCreeper.class, "AluminiumCreeper", 0, this, 250, 1, false); //Entityの自然スポーンを登録する EntityRegistry.addSpawn(EntityAluminiumCreeper.class, 20, 1, 4, EnumCreatureType.creature, BiomeGenBase.plains); /*EntityのRenderを登録する *Client側でのみ登録するため、今回はif文で処理をする。*/ if(FMLCommonHandler.instance().getSide() == Side.CLIENT) { this.render(); } } @SideOnly(Side.CLIENT) public void render() { RenderingRegistry.registerEntityRenderingHandler(EntityAluminiumCreeper.class, new RenderAluminiumCreeper()); } } EntityAluminiumCreeper.java +長いので囲みます package tutorial.aluminiummod; import net.minecraft.block.material.Material; import net.minecraft.entity.EnumCreatureAttribute; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAIAttackOnCollide; import net.minecraft.entity.ai.EntityAIAvoidEntity; import net.minecraft.entity.ai.EntityAIHurtByTarget; import net.minecraft.entity.ai.EntityAILookIdle; import net.minecraft.entity.ai.EntityAINearestAttackableTarget; import net.minecraft.entity.ai.EntityAISwimming; import net.minecraft.entity.ai.EntityAIWander; import net.minecraft.entity.ai.EntityAIWatchClosest; import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.passive.EntityOcelot; import net.minecraft.entity.passive.EntityPig; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.stats.AchievementList; import net.minecraft.util.ChatComponentText; import net.minecraft.util.DamageSource; import net.minecraft.world.World; public class EntityAluminiumCreeper extends EntityMob { public EntityAluminiumCreeper(World world) { super(world); /*EntiyのAIを登録する*/ this.tasks.addTask(1, new EntityAISwimming(this)); this.tasks.addTask(2, new EntityAIAttackOnCollide(this, EntityPig.class, 1.0D, false)); this.tasks.addTask(2, new EntityAIAvoidEntity(this, EntityOcelot.class, 6.0F, 1.0D, 1.2D)); this.tasks.addTask(3, new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.0D, false)); this.tasks.addTask(4, new EntityAIWander(this, 0.8D)); this.tasks.addTask(5, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); this.tasks.addTask(6, new EntityAILookIdle(this)); this.targetTasks.addTask(1, new EntityAINearestAttackableTarget(this, EntityPig.class, 1,false)); this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 1, true)); this.targetTasks.addTask(2, new EntityAIHurtByTarget(this, false)); } /**MOBの速度やHPを変更するメソッド*/ @Override protected void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.5D); this.getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(128D); this.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).setBaseValue(100D); this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(1.5D); } /**MOBの属性を返すメソッド*/ @Override public EnumCreatureAttribute getCreatureAttribute() { return EnumCreatureAttribute.UNDEFINED; } /**MOBのドロップアイテムを返すメソッド*/ @Override public Item getDropItem() { return Item.getItemFromBlock(Blocks.wool) ; } /**MOBのドロップアイテムをドロップさせるメソッド*/ @Override protected void dropFewItems(boolean isCanDropRare, int fortuneLv){ Item item = this.getDropItem(); int amount = 1; if(isCanDropRare this.rand.nextBoolean()) { item = Item.getItemFromBlock(Blocks.stained_glass); } if(fortuneLv 0) { amount += fortuneLv; } int damage = this.rand.nextInt(16); for(int i = 0; i amount; i++) { this.entityDropItem(new ItemStack(item, amount, damage), 0.0F); } } /**Tickごとに呼ばれるメソッド*/ @Override public void onUpdate() { int x = (int) this.posX; int y = (int) this.posY; int z = (int) this.posZ; if(this.worldObj.getBlock(x, y - 1, z).getMaterial() == Material.iron) { this.worldObj.createExplosion(this, x, y, z, 3F, true); } super.onUpdate(); } /**MOB死亡時に呼ばれるメソッド*/ public void onDeath(DamageSource source) { super.onDeath(source); if(source.getSourceOfDamage() != null source.getSourceOfDamage() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) source.getSourceOfDamage(); if(!this.worldObj.isRemote) { player.addChatMessage(new ChatComponentText("You slayed.")); player.triggerAchievement(AchievementList.mineWood); } } } /**ダメージを食らうか否かを判定するメソッド*/ @Override public boolean attackEntityFrom(DamageSource source, float damage) { if(source.isExplosion()) { return false; } else if(source.isFireDamage()) { return super.attackEntityFrom(source, damage * 2); } else { return super.attackEntityFrom(source, damage); } } } RenderAluminiumCreeper.java +長いので囲みます package tutorial.aluminiummod; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; public class RenderAluminiumCreeper extends RenderLiving { public RenderAluminiumCreeper() { super(new ModelAluminiumCreeper() , 0.5F); } /**テクスチャを登録するメソッド*/ @Override protected ResourceLocation getEntityTexture(Entity entity) { return new ResourceLocation("aluminiummod textures/mobs/aluminium_creeper.png"); } } ModelAluminiumCreeper.java +長いので囲みます package tutorial.aluminiummod; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; import net.minecraft.util.MathHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class ModelAluminiumCreeper extends ModelBase { public ModelRenderer head; public ModelRenderer head2; public ModelRenderer body; public ModelRenderer leg1; public ModelRenderer leg2; public ModelRenderer leg3; public ModelRenderer leg4; public ModelAluminiumCreeper() { this(0.0F); } /**Modelを登録するメソッド*/ public ModelAluminiumCreeper(float size) { byte b0 = 4; this.head = new ModelRenderer(this, 0, 0); this.head.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, size); this.head.setRotationPoint(0.0F, (float)b0, 0.0F); this.head2 = new ModelRenderer(this, 32, 0); this.head2.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, size + 0.5F); this.head2.setRotationPoint(0.0F, (float)b0, 0.0F); this.body = new ModelRenderer(this, 16, 16); this.body.addBox(-4.0F, 0.0F, -2.0F, 8, 12, 4, size); this.body.setRotationPoint(0.0F, (float)b0, 0.0F); this.leg1 = new ModelRenderer(this, 0, 16); this.leg1.addBox(-2.0F, 0.0F, -2.0F, 4, 6, 4, size); this.leg1.setRotationPoint(-2.0F, (float)(12 + b0), 4.0F); this.leg2 = new ModelRenderer(this, 0, 16); this.leg2.addBox(-2.0F, 0.0F, -2.0F, 4, 6, 4, size); this.leg2.setRotationPoint(2.0F, (float)(12 + b0), 4.0F); this.leg3 = new ModelRenderer(this, 0, 16); this.leg3.addBox(-2.0F, 0.0F, -2.0F, 4, 6, 4, size); this.leg3.setRotationPoint(-2.0F, (float)(12 + b0), -4.0F); this.leg4 = new ModelRenderer(this, 0, 16); this.leg4.addBox(-2.0F, 0.0F, -2.0F, 4, 6, 4, size); this.leg4.setRotationPoint(2.0F, (float)(12 + b0), -4.0F); } /**Modelをレンダリングするメソッド*/ public void render(Entity entity, float f1, float f2, float f3, float yaw, float pitch, float size) { this.setRotationAngles(f1, f2, f3, yaw, pitch, size, entity); this.head.render(size); this.body.render(size); this.leg1.render(size); this.leg2.render(size); this.leg3.render(size); this.leg4.render(size); } /**頭、足、腕などの角度を設定するメソッド*/ public void setRotationAngles(float f1, float f2, float f3, float yaw, float pitch, float size, Entity entity) { this.head.rotateAngleY = yaw / (180F / (float)Math.PI); this.head.rotateAngleX = pitch / (180F / (float)Math.PI); this.leg1.rotateAngleX = MathHelper.cos(f1 * 0.6662F) * 1.4F * f2; this.leg2.rotateAngleX = MathHelper.cos(f1 * 0.6662F + (float)Math.PI) * 1.4F * f2; this.leg3.rotateAngleX = MathHelper.cos(f1 * 0.6662F + (float)Math.PI) * 1.4F * f2; this.leg4.rotateAngleX = MathHelper.cos(f1 * 0.6662F) * 1.4F * f2; } } ItemAluminiumEgg.java +長いので囲みます package tutorial.aluminiummod; import net.minecraft.block.Block; import net.minecraft.block.BlockLiquid; import net.minecraft.entity.Entity; import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.Facing; import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; /**このクラスは、net.minecraft.Item.ItemMonsterPlacerをもとに作成しています。*/ public class ItemAluminiumEgg extends Item { /**アイテムでブロックを右クリックしたのメソッド。ItemMonsterPlacer参照。*/ @Override public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int side, float posX, float posY, float posZ) { //サーバー側の場合は処理をスキップする if (world.isRemote) { return true; } else { Block block = world.getBlock(x, y, z); x += Facing.offsetsXForSide[side]; y += Facing.offsetsYForSide[side]; z += Facing.offsetsZForSide[side]; double height = 0.0D; if (side == 1 block.getRenderType() == 11) { height = 0.5D; } Entity entity = spawnEntity(world, (double)x + 0.5D, (double)y + height, (double)z + 0.5D); if (entity != null) { if (!player.capabilities.isCreativeMode) { --itemStack.stackSize; } } return true; } } /**アイテムを使ったときのメソッド。ItemMonsterPlacer参照。*/ @Override public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) { //サーバー側の場合は処理をスキップする if (world.isRemote) { return itemStack; } else { MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(world, player, true); if (movingobjectposition == null) { return itemStack; } else { if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) { int x = movingobjectposition.blockX; int y = movingobjectposition.blockY; int z = movingobjectposition.blockZ; if (!world.canMineBlock(player, x, y, z)) { return itemStack; } if (!player.canPlayerEdit(x, y, z, movingobjectposition.sideHit, itemStack)) { return itemStack; } if (world.getBlock(x, y, z) instanceof BlockLiquid) { Entity entity = spawnEntity(world, (double)x, (double)y, (double)z); if (entity != null) { if (!player.capabilities.isCreativeMode) { --itemStack.stackSize; } } } } return itemStack; } } } /**Mobをスポーンさせるメソッド*/ public Entity spawnEntity(World world, double x, double y, double z) { EntityAluminiumCreeper entityliving = new EntityAluminiumCreeper(world); entityliving.setLocationAndAngles(x, y, z, MathHelper.wrapAngleTo180_float(world.rand.nextFloat() * 360.0F), 0.0F); entityliving.rotationYawHead = entityliving.rotationYaw; entityliving.renderYawOffset = entityliving.rotationYaw; entityliving.onSpawnWithEgg((IEntityLivingData)null); world.spawnEntityInWorld(entityliving); entityliving.playLivingSound(); return entityliving; } } 解説 AluminiumMod +長いので囲みます void registerModEntity(Class ? extends Entity entityClass, String entityName, int id, Object mod, int trackingRange, int updateFrequency, boolean sendsVelocityUpdates) Mod用のMOBを追加するメソッド。 引数は、以下の通り。 引数 内容 entityClass 追加するEntityをClass型で渡す。 entityName 追加するEntityの名称。langファイルで、entity.[MODIDで登録した名称].[entityNameで登録した名称].name=[ローカル名]でローカル名を登録できる。 id 追加するEntityのID。同一MOD内で被るとエラーを吐く。 mod MODを渡す。thisで渡せばOK。 trackingRange MOBの更新範囲。 updateFrequency MOBの更新頻度。何tickごとにMOBを更新するかの値。基本的に2以下の値を渡す。 sendsVelocityUpdates MOBの更新時に加速度の情報を更新させるか否か。MOBや動物の場合は基本的にtrueを渡す。 void addSpawn(Class ? extends EntityLiving entityClass, int weightedProb, int min, int max, EnumCreatureType typeOfCreature, BiomeGenBase... biomes) Entityの自然スポーンを追加するメソッド。 引数は、以下の通り。 引数 内容 entityClass スポーンを追加させるEntityをClass型で渡す。 weightProb Entityのスポーンがどれくらいの頻度で抽選されるかの値。値が大きいほうがスポーンしやすい。 min Entityがスポーンする際の最低数。 max Entityがスポーンする際の最高数。 typeOfCreature Entityのスポーンタイプ。EnumCreatureType一覧-monster...敵性MOBの属性。夜にスポーンする。-creature...友好MOB(とオオカミ、ヤマネコ)の属性。昼にスポーンする。-ambient...コウモリの属性。-waterCreature...イカの属性。これのみ、スポーン場所が空気中でなく水中になる。 biomes Entityがスポーンするバイオーム。複数バイオームを渡す場合は、先にfinal定数でリストを作ってからそのリストをそのまま引数に渡した方がいい。 void registerEntityRenderingHandler(Class ? extends Entity entityClass, Render renderer) Entityのレンダーを追加するメソッド。 Client限定の処理であり、Serverで処理してしまうとクラッシュの原因になるため、必ずif文とSideOnlyアノテーションを付けたメソッドで処理をする。 もしくは、proxyで分化させる手もある。 第一引数には登録EntityをClass型で、第二引数は登録Renderをインスタンス型で渡す。 EntityAluminiumCreeper +長いので囲みます tasks.addTask(int p_75776_1_, EntityAIBase p_75776_2_) Entityに攻撃、移動AIを追加するメソッド。 ターゲットAIは後述のtargetTasks.addTaskを用いる。 第一引数はAIの順位(小さいほうが先に行動される。)、第二引数がAI。 主なAI EntityAISwimming(EntityLiving p_i1624_1_) 水を泳ぐAI。 第一引数にはthisを渡す。 EntityAIAttackOnCollide(EntityCreature p_i1635_1_, Class p_i1635_2_, double p_i1635_3_, boolean p_i1635_5_) 特定のEntityを襲うAI。 第一引数にはthis、第二引数には襲う対象のEntityをクラス型で、第三引数には自分の通常移動速度に対する倍率、第四引数には追い続けるか否かの判定を渡す。 第三引数が1より大きいと、通常の移動スピードより高速で襲ってくることになる。 EntityAIAvoidEntity(EntityCreature p_i1616_1_, Class p_i1616_2_, float p_i1616_3_, double p_i1616_4_, double p_i1616_6_) 特定のEntityから逃げるAI。 第一引数にはthis、第二引数には逃げる対象のEntityをクラス型で、第三引数には対象からどれだけ逃げるかの距離、第四引数には対象と十分離れたときの逃げる速度の倍率、第五引数には対象と近いときの逃げる速度の倍率を渡す。 第四引数 第五引数となれば、対象と近いときはより急いで逃げるようになる。 EntityAIWander(EntityCreature p_i1648_1_, double p_i1648_2_) うろうろするAI。 第一引数にはthis、第二引数には速度の倍率を渡す。 第二引数は、基本的に1より小さい値を渡す。 EntityAIWatchClosest(EntityLiving p_i1631_1_, Class p_i1631_2_, float p_i1631_3_) 特定のEntityを睨むAI。 第一引数にはthis、第二引数には睨む対象のEntityをクラス型で、第三引数は対象との距離を渡す。 第三引数が大きいと、対象が離れていても視認する。 EntityAILookIdle(EntityLiving p_i1647_1_) きょろきょろするAI。thisを渡す。 targetTasks.addTask(int p_75776_1_, EntityAIBase p_75776_2_) EntityにターゲットAIを追加するメソッド。 第一引数はAIの順位(小さいほうが先に行動される。)、第二引数がAI。 主なAI EntityAINearestAttackableTarget(EntityCreature p_i1663_1_, Class p_i1663_2_, int p_i1663_3_, boolean p_i1663_4_) 特定のEntityをターゲッティングするAI。 第一引数にはthis、第二引数には対象のEntityをクラス型で、第三引数には行動しない確率(0だと攻撃できる場所に入れば必ずターゲッティングされる)、第四引数にはブロックに囲まれていてもターゲッティングするか否かを渡す。 第四引数をtrueにすると、ゾンビのように対象がブロックに囲まれていても、視認できれば攻撃しようとする。 EntityAIHurtByTarget(EntityCreature p_i1660_1_, boolean p_i1660_2_) 攻撃したEntityに反撃するAI。 第一引数にはthis、第二引数には反撃する際周囲の同種のEntityに助けを求めるか否かを渡す。 第二引数をtrueにすると、第一引数のEntityを攻撃したEntityは、第一引数と同種の周囲のEntityにも狙われる。ゾンビやゾンビピッグマンのような行動をする。 EntityLivingBase.getEntityAttribute(IAttribute p_110148_1_).setBaseValue(double p_111128_1_) Entityに対してHPやスピード等の数値を追加するメソッド。 getEntityAttributeに追加する数値の種類、setBaseValueにその値を渡す。 引数一覧 すべてSharedMonsterAttributesのstatic定数である。 定数名 説明 既定値 movementSpeed 移動速度 0.7(ただし、バニラのMOBは基本的に0.25) followRange 追跡距離 32 knockbackResistance ノックバック耐性 0 maxHealth 体力 20 RenderAluminiumCreeper ResourceLocation(String p_i1293_1_) Entityなどでテクスチャを指定する際につかうコンストラクター。 "aluminiummod textures/mobs/aluminium_creeper.png"のように、ファイルと修飾子まで入れる必要がある。 また、テクスチャを実装する場合は、今回のものはモデルをクリーパーのものを流用したため、クリーパーのテクスチャをaluminiummod/mobs/に放り込んでaluminium_creeperと名前を付ければよい。 ItemAluminiumEgg spawnEntityInWorld(Entity p_72838_1_) Entityをワールドにスポーンさせるメソッド。 ただし、setLocationAndAnglesなどで先にスポーン位置を指定する必要がある。 Tips クリーパーに因んでEntityを光らせる方法と爆発を発生させる方法を説明する。 Entityを光らせる 以下のコードを追加する。 @SideOnly(Side.CLIENT) public int getBrightnessForRender(float p_70070_1_) { return 15728880; } public float getBrightness(float p_70013_1_) { return 50.0F; } getBrightnessForRenderが描画側、getBrightnessが計算側に明るさを渡す。数値はこれらが最大値である。 爆発を発生させる 爆発を発生させる方法は二種類ある。どちらもWorldクラスに属する。 createExplosion(Entity entity, double x, double y, double z, float power, boolean destroyBlocks) 引数は発生Entity(このEntityは爆発によるダメージ、処理から除外されることになる)、座標(double三つ)、威力(大体土ブロックでの爆発半径に等しい。威力15以上は何故か正方形状に削れてしまう上範囲がほぼ広がらないため別処理の実装が望ましい。匠CraftのEntityGiantCreeper参照。)、ブロックを破壊するか否か、となっている。 newExplosion(Entity entity, double x, double y, double z, float power, boolean destroyBlocks, boolean spreadFire) 最終引数以外上記と一緒。最終引数は炎を撒き散らすかどうか。ファイアボールのような処理にしか使わない。なお、上のcreateExplosionはこの関数にfalseを渡しているだけである。 また、この二つの関数はExplosion型を返すため、イベントの追加にある爆発のフック処理をこの爆発限定で行うことも出来る。 コメント この項目に関する質問などをどうぞ。 EntityAluminiumCreeperの解説のEntityLivingBase.getEntityAttributeの下にあるmaxHealth|体力|20|がミスってますよ - 名無しさん 2016-02-02 19 49 20 ご指摘ありがとうございます。修正いたしました。 - Tom Kate 2016-02-02 20 28 33 AluminiumModの解説の(Class ? extends Entity entityClass, String entityName, int id, Object mod, int trackingRange, int updateFrequency, boolean sendsVelocityUpdates)のObject modをthisを使わないで処理しようと思ったら何を入れればいいですか? - west_village 2016-08-08 21 53 19 public static final AluminumMod instance = new AluminumMod();のように、インスタンスを作ってインスタンスを引数に渡してください。 - Tom Kate 2016-08-08 22 37 24 匠Craftの光匠やグロウストーン匠のように、光るMOBを作る方法はありますか?(実際は光っていないのかもしれないのか…?) - あるふぁ 2017-05-30 19 48 05 追記いたします。ご確認ください。 - Tom Kate 2017-06-01 19 39 57 たびたびすみません。プレイヤーなど既存のMOBを光らせる方法はありますか? - あるふぁ 2017-06-01 20 53 42 返信遅くなりまして申し訳ありません。こちらのチュートリアルにTipsとして追記しました。 - Tom Kate 2017-06-07 19 27 42 追記できておりません。Tom氏が多忙のようですので、もうしばらくお時間いただくことになりそうです。申し訳ありません。 - 赤砂蛇凪浜 2017-06-16 18 11 48 名前
https://w.atwiki.jp/ryoki-minecraft/
Minecraft リョキ王国鯖 お知らせ BetterDungeonsと攻略記録ページを作成しました。2013/04/07 バージョン1.5.1にアップデート!新しい世界にようこそ!2013/04/07 隣国建国中。2012/08/13 国王作スキンのページを作成しました。2012/04/18 ニャースとソーナンスのスキンを作成しました。2012/04/18 Minecraft リョキ王国鯖のウィキを作りました。2012/04/15 合計: - .
https://w.atwiki.jp/cloneofminecraft/pages/76.html
Minecraft ゲーム名 ゲーム紹介ページ マルチプレイ お試し版は? 備考 機種 値段 Minecraft WiiU Edition Please Wait ○ ? - WiiU 3,888円 有料のMinecraftクローン ゲーム名 ゲーム紹介ページ マルチプレイ お試し版は? 備考 機種 値段 U Craft Please Wait あり? 不明 Wii U 不明 Cube Life Island Survival Please Wait ? ? 日本から購入不可(国ごとにeショップが違うため) Wii U ? 開発中 ゲーム名 ゲーム紹介ページ マルチプレイ お試し版は? 備考 OS 値段 Stone Shire Please Wait ? ? Wii U,Nintendo 3DS ?
https://w.atwiki.jp/raodonutserver/pages/30.html
グローバルIPでの接続 IPアドレスってなんだろう… IPアドレスとはネットワーク上での住所みたいなものです。サーバーに接続するにはIPアドレスが重要になってきます。 ポート開放ってなんぞ… PCにはファイアウォールという厳重なセキュリティが施されています。不正な侵入を防ぐためにデフォルトではポートが全部閉められています。ただしアプリケーションによってはそれを開かないとPCにデータが辿りつく前にLANで弾かれるときがあります。その道を開ける作業がポート開放(ポート転送設定)といいます。簡単にいえばファイアウォールに穴を開けることです。 Minecraftの通信ではTCPポート25565を経由して接続されます。上記で説明したようにデフォルトの設定ではポートが全部閉められているため、このままでは外部から接続することができません。接続を可能にするにはこのポートを開く必要があります。 ポート開放をするには ポートを開くということは壁に穴を開けると同じで下手にやるとリスクを伴います。 基本的にルータからポートを開くことができますがルータのアドレスがわからない時などはソフトを使って開くこともできます。 ルータで開く場合はルータの説明書に従って開いてください。 おすすめソフト・・・UPnPCJ グローバルIPをしらべる:http //dog.tele.jp/lookup.php/ ポート開放について:http //www.akakagemaru.info/port/
https://w.atwiki.jp/misskey/pages/13.html
導入していないといけないMODはありません 日本語入力MOD(IntellInputなど)はあると便利です。 ちなみにサーバ側のプラグインでLunaChatが導入されたので、日本語入力MODを導入していなくてもローマ字でチャットを入力すると変換されて、書く方も読む方もすこし快適になりました。 チート系MODの使用は厳禁です X-ray(透過)やFlyhack(飛行)など、チート系MODの使用は厳禁です。
https://w.atwiki.jp/if-dairi/pages/18.html
※MODを導入してバックアップを取ったうえ導入してくださいこちらは一切の責任を問いません 前提MOD Minecraft Forgeバージョンは1.6.2ならなんでも immidis-core-56.0.3 通常MOD Dimensional Anchors56.0.1 IndustrialCraft²-1.118.401 Forestry for Minecraft2.3.0.1 BuildCraft4.0.2 五つの難題MOD+-2.30-1.6.2 MoreInventoryMod-v1.2.7 Multi Page Chest-1.2.4b 竹MOD-2.6.2 FBL-0.4-MCF-1.6.2 TF2-Teleporter-1.6.2a Advanced Machines-1.6.2 CompactSolars-1.6.2-4.3.8.97 Advanced Power Management1.279-IC2=1.118 CutAll-2.4.7 MineAll-2.4.8 AdvancedFiller NanaEdition_Build18 Applied Energistics ver12.b Caveworld ver1.0.6] Vanity Blocks Mod4.0.2 customStuff2
https://w.atwiki.jp/torototoro/pages/2.html
新規ユーザーの方へ* サーバー紹介* サーバー三ヶ条* コマンド一覧 チャットについて 導入プラグイン一覧 ニコニコ生放送 サーバー仕様 よくある質問 Q&A リンク Minecraft公式ページ Minecraft wiki 今日 - 昨日 - 合計 - ここを編集
https://w.atwiki.jp/rinse33mg/pages/2.html
メニュー トップページ サーバー詳細 導入済みMOD リンク Minecraft Japan Wiki 更新履歴 取得中です。 ここを編集
https://w.atwiki.jp/akinya/pages/54.html
編集 Mod 1.6.4 1.7.10 最新(1.8) サイト Ars Magica 2 OK OK NG wiki Galacticraft2 OK OK NG 公式 wiki Galacticraft3 NG OK NG 公式 Mekanism OK OK NG 公式 wiki MineChem5 Last OK NG 公式 Universal Electricity OK OK NG 公式 Resonant Engineに吸集 Resonant Engine OK OK NG 公式 Resonant-induction OK OK NG 公式 ICBM OK OK NG 公式 Modular Force Field System OK OK NG 公式 Open Computers OK OK NG 公式 Modular Powersuits OK OK NG 公式 Mad Science OK OK NG 公式 Inventory Tweaks 1.6.2 OK NG 公式 Thermal Expansion OK OK NG 公式 Applied Energistics OK OK NG 公式 Applied Energistics 2 NG OK NG 公式 MineAllSMP OK OK NG 公式 CutAllSMP OK OK NG 公式 DigAllSMP OK OK NG 公式 PickupWidelySMP OK OK NG 公式 NotEnoughItems OK OK NG 公式 Build Craft4 OK OK NG 公式 Build Craft5 NG OK NG 公式 Build Craft6 NG OK NG 公式 Build Craft7 NG β NG 公式 RailCraft8 OK NG NG RailCraft9 NG OK NG Botania OK Thaumcraft3 NG NG NG Thaumcraft4 OK OK NG 公式 Forestry for Minecraft OK BC推奨 OpenBlocks http //www.openmods.info OpenModLibが必要